<?php

class BolGestionController extends Controller{

	var $widKey = false;

	public function actionSaveQuestions(){	
        $obj = json_decode($_REQUEST['objForm']);
        $i = 496; 
        //print_r($obj);       
        //*
        foreach($obj as $value){            
            $i++;            			
            $mode = new tbl_preg_ges_detalle;
            $mode->prd_codigo = 'PG'.$i;
            $mode->prd_preg = 'PM33';
            $mode->prd_tipopre = $value->tipo;
            $mode->prd_pregunta = trim(substr($value->pregunta, 0, 1) == '<'?substr($value->pregunta,23,-7):(substr($value->pregunta,-37) == '<span class="dhxform_info">[?]</span>'?substr($value->pregunta,0,-37):$value->pregunta));
            //$a[] = trim(substr($value->pregunta, 0, 1) == '<'?substr($value->pregunta,23,-7):(substr($value->pregunta,-37) == '<span class="dhxform_info">[?]</span>'?substr($value->pregunta,0,-37):$value->pregunta));
            $mode->prd_nivel = $value->nivel;
            $mode->prd_estado = '0';
            $mode->save();            
        }
        //print_r($a);
        echo "bien";
        //*/
	}
    public function actionStatus(){
        $post = tbl_resp_modulos::model()->with('rpta')->findAll('rma_municipio=:getMun && rma_tipobol=:getBol && rmo_modulo=:getMod',        
        array(':getMun'=>$_GET['mun'],':getBol'=>$_GET['bol'],':getMod'=>$_GET['met']));
        foreach($post as $row){
            echo $row->rmo_terminado;
        }        
    }
    private function actionGetQuestionDetail($question, $nivel, $modulo){
        $codePreg = tbl_preg_ges_detalle::model()->with('preg')->find('prd_pregunta=:postPrgta AND prd_nivel=:postNivel AND pre_modulo=:postModulo', 
                    array(
                        ':postPrgta'=>$question,
                        ':postNivel'=>$nivel,
                        ':postModulo'=>$modulo
                    ));
        if(!isset($codePreg->prd_codigo)){
            $codePreg = tbl_preg_ges_detalle::model()->with('preg')->find('prd_pregunta=:postPrgta AND prd_nivel=:postNivel AND pre_modulo=:postModulo', 
                array(
                    ':postPrgta'=>'Otros (especificar)',
                    ':postNivel'=>$nivel,
                    ':postModulo'=>$modulo
                ));
        }
        return $codePreg;
    }
    private function actionGetMaxId($id, $table){
        $cmd = Yii::app()->db->createCommand();
        $con = $cmd->select('MAX('.$id.') AS cont')->from($table)->queryAll();
        return $con[0]['cont'];
    }
    public function actionLoadModData(){
        $obj = json_decode($_REQUEST['dataItems']);
        
        /**
         * AQUI SE RECUPERA TODOS LOS DATOS CON RESPUESTAS
         */
        $post = tbl_resp_ges_respuest::model()->with('respMain')->findAll('rma_municipio=:getMun && rma_tipobol=:getBol && res_resp_modulos=:getMod && res_estado = 0',
                array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));
        
        $dataForm = $dataGrid = Array();

        foreach($post as $row){         
            if(empty($row->res_column) && empty($row->res_posgrid))
                $dataForm[] = array('nivel'=>$row->res_nivel,'respuesta'=>!empty($row->res_respnum)?$row->res_respnum:$row->res_resptext);
            else{
                $editColumn = tbl_preg_ges_detmo::model()->find('prm_municipio=:getMun && prm_modulos=:getMod && prm_boleta=:getBol && prm_nivel=:getNiv && prm_pregunta=:getPre && prm_estado = 0',
                              array(':getMun'=>$obj->municipio,':getMod'=>$obj->modulo,':getBol'=>$obj->tipoBolet,':getNiv'=>$row->res_nivel,':getPre'=>$row->res_pregunta));
                if(!empty($editColumn))
                    $dataGrid[] = array('nivel'=>$row->res_nivel,'newRowTxt'=>$editColumn->prm_modificacion,'posicion'=>$row->res_posgrid,'respuesta'=>!empty($row->res_respnum)?$row->res_respnum:$row->res_resptext,'pregunta'=>$row->res_pregunta);
                else
                    $dataGrid[] = array('nivel'=>$row->res_nivel,'posicion'=>$row->res_posgrid,'respuesta'=>!empty($row->res_respnum)?$row->res_respnum:$row->res_resptext);
            }
        }

        /**
         * AQUI SE RECUPERA TODOS LOS DATOS CON 0 (CEROS)
         */
        $post = tbl_resp_ges_ceros::model()->with('respMain')->findAll('rma_municipio=:getMun && rma_tipobol=:getBol && rce_resp_modulos=:getMod && rce_estado = 0',
                array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));

        foreach ($post as $row) {
            if(empty($row->rce_column) && empty($row->rce_posgrid))
                $dataForm[] = array('nivel'=>$row->rce_nivel,'respuesta'=>'0');
            else{
                $editColumn = tbl_preg_ges_detmo::model()->find('prm_municipio=:getMun && prm_modulos=:getMod && prm_boleta=:getBol && prm_nivel=:getNiv && prm_pregunta=:getPre && prm_estado = 0',
                              array(':getMun'=>$obj->municipio,':getMod'=>$obj->modulo,':getBol'=>$obj->tipoBolet,':getNiv'=>$row->rce_nivel,':getPre'=>$row->rce_pregunta));
                if(!empty($editColumn))                 
                    $dataGrid[] = array('nivel'=>$row->rce_nivel,'newRowTxt'=>$editColumn->prm_modificacion,'posicion'=>$row->rce_posgrid,'respuesta'=>'0','pregunta'=>$row->prm_pregunta);
                else
                    $dataGrid[] = array('nivel'=>$row->rce_nivel,'posicion'=>$row->rce_posgrid,'respuesta'=>'0');
            }
        }
        echo json_encode(array('dataForm'=>$dataForm,'dataGrid'=>$dataGrid));
    }
    public function actionSaveFile(){
        $transaction = Yii::app()->db->beginTransaction();
        try{
            $fileName = $_FILES["file"]["name"];
            
            $auxFile = explode('.',$fileName);
            $fileType = $auxFile[count($auxFile) - 1];
            $nameArchivo = md5(uniqid($fileName, true)).'.'.$fileType;
            move_uploaded_file($_FILES["file"]["tmp_name"], Yii::app()->basePath."/../uploadFiles/".$nameArchivo); 
            
            $con = self::actionGetMaxId('ref_id', 'tbl_resp_ges_files');

            $model = new tbl_resp_ges_files_detalle;
            $model->rfd_codigo = 'F'.$con;
            $model->rfd_nombre = $fileName;
            $model->rfd_nombre_encode = $nameArchivo;
            $model->rfd_estado = 0;

            $this->widKey = $model->save();
            if($this->widKey){                                
                $transaction->commit();                                            
            }
        } catch(Exception $e) {
            $this->widKey = false;
        }
        if(!$this->widKey){
            $transaction->rollback();
            echo "Error system in Controller 'Boleta Gestion' in save upload data all files.";
        }
        print_r("{state: true}");
    }
    public function actionSave(){
        $contItem = 0;
        $obj = json_decode($_REQUEST['objForm']);
        $transaction = Yii::app()->db->beginTransaction();
        $swk = 0;
        try{
            if(isset($_REQUEST['bolDate'])){
                $mod = tbl_resp::model()->find('rma_municipio=:getMuni && rma_tipobol=:getBole',array(':getMuni'=>$obj->municipio,':getBole'=>$obj->tipoBolet));
                $mod->rma_fecha = $_REQUEST['bolDate'];
                $this->widKey = $mod->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            else
                $mod = tbl_resp::model()->find('rma_municipio=:getMuni && rma_tipobol=:getBole',array(':getMuni'=>$obj->municipio,':getBole'=>$obj->tipoBolet));
            /**
             * INICIO ---> GUARDADO DE DATOS CON RESPUESTAS
             */            
            count($obj->dataValue) > 0 ? $con = self::actionGetMaxId('res_id', 'tbl_resp_ges_respuest'):null;
            $num = 0;
            foreach($obj->dataValue as $data) {
                $auxn = $auxs = '';
                $num++;
                
                $question = isset($data->pregunta)?$data->pregunta:'----';
                $codePreg = self::actionGetQuestionDetail($question, $data->nivel, $data->modulo);

                $model = new tbl_resp_ges_respuest;
                           
                $model->res_codigo = 'R'.($con + $num);
                $model->res_resp = $mod->rma_codigo;
                $model->res_resp_modulos = $data->modulo;
                $model->res_tipobol = $obj->tipoBolet;
                $model->res_posgrid = isset($data->posGrid)?$data->posGrid:'';
                $model->res_pregunta = isset($codePreg->prd_codigo)?$codePreg->prd_codigo:'----';
                $model->res_column = isset($data->columna)?$data->columna:'';
                $model->res_nivel = $data->nivel;

                (is_numeric($data->respuesta))?$auxn = $data->respuesta:$auxs = $data->respuesta;

                $model->res_respnum = $auxn;
                $model->res_resptext = $auxs;
                $model->res_fecha = date("Y-m-d H:i:s");
                $model->res_usuarios = Yii::app()->session['user'];
                $model->res_estado = 0;
                
                $this->widKey = $model->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * FIN ---> GUARDADO DE DATOS CON RESPUESTAS
             */

            /**
             * INICIO ---> GUARDADO DE DATOS CON CEROS
             */
            count($obj->dataCeros) > 0 ? $con = self::actionGetMaxId('rce_id', 'tbl_resp_ges_ceros'):null;
            $num = 0;
            foreach($obj->dataCeros as $data) {
                $num++;
                
                $question = isset($data->pregunta)?$data->pregunta:'----';
                $codePreg = self::actionGetQuestionDetail($question, $data->nivel, $data->modulo);

                $model = new tbl_resp_ges_ceros;
                $model->rce_codigo = 'C'.($con + $num);
                $model->rce_resp = $mod->rma_codigo;
                $model->rce_resp_modulos = $data->modulo;
                $model->rce_tipobol = $obj->tipoBolet;
                $model->rce_posgrid = isset($data->posGrid)?$data->posGrid:'';
                $model->rce_pregunta = isset($codePreg->prd_codigo)?$codePreg->prd_codigo:'----';
                $model->rce_column = isset($data->columna)?$data->columna:'';
                $model->rce_nivel = $data->nivel;                           
                $model->rce_fecha = date("Y-m-d H:i:s");  
                $model->rce_usuarios = Yii::app()->session['user'];
                $model->rce_estado = 0;
                
                $this->widKey = $model->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * FIN ---> GUARDADO DE DATOS CON CEROS
             */

            /**
             * INICIO ---> GUARDADO DE DATOS VACIOS
             */
            count($obj->dataEmpty) > 0 ? $con = self::actionGetMaxId('rem_id', 'tbl_resp_ges_empty'):null;
            $num = 0;
            foreach($obj->dataEmpty as $data) {
                $num++;

                $question = isset($data->pregunta)?$data->pregunta:'----';
                $codePreg = self::actionGetQuestionDetail($question, $data->nivel, $data->modulo);

                $model = new tbl_resp_ges_empty;

                $model->rem_codigo = 'E'.($con + $num);
                $model->rem_resp = $mod->rma_codigo;
                $model->rem_resp_modulos = $data->modulo;
                $model->rem_tipobol = $obj->tipoBolet;
                $model->rem_posgrid = isset($data->posGrid)?$data->posGrid:'';
                $model->rem_pregunta = isset($codePreg->prd_codigo)?$codePreg->prd_codigo:'----';
                $model->rem_column = isset($data->columna)?$data->columna:'';
                $model->rem_nivel = $data->nivel;                           
                $model->rem_fecha = date("Y-m-d H:i:s");  
                $model->rem_usuarios = Yii::app()->session['user'];
                $model->rem_estado = 0;
                
                $this->widKey = $model->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * FIN ---> GUARDADO DE DATOS VACIOS
             */

            /**
             * INICIO ---> GUARDADO DE DATOS DE FILAS NUEVAS
             */
            count($obj->dataPrgMo) > 0 ? $con = self::actionGetMaxId('prm_id', 'tbl_preg_ges_detmo'):null;
            $num = 0;
            foreach($obj->dataPrgMo as $data) {
                $num++;

                $question = 'Otros (especificar)';
                $codePreg = self::actionGetQuestionDetail($question, $data->nivel, $data->modulo);
                
                $model = new tbl_preg_ges_detmo;
                
                $model->prm_codigo = 'U'.($con + $num);
                $model->prm_municipio = $obj->municipio;                
                $model->prm_modulos = $data->modulo;                
                $model->prm_pregunta = isset($codePreg->prd_codigo)?$codePreg->prd_codigo:'----';  
                $model->prm_boleta = $obj->tipoBolet;                
                $model->prm_modificacion = $data->preguntaMod;
                $model->prm_nivel = $data->nivel;
                $model->prm_estado = 0;            
                                
                $this->widKey = $model->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * FIN ---> GUARDADO DE DATOS DE FILAS NUEVAS
             */

            /**
             * INICIO ---> GUARDADO DE ARCHIVOS
             */
            count($obj->dataFiles) > 0 ? $con = self::actionGetMaxId('ref_id', 'tbl_resp_ges_files'):null;
            $num = 0;
            foreach ($obj->dataFiles as $data) {
                $num++;

                $model = new tbl_resp_ges_files;

                $model->ref_codigo = 'F'.($con + $num);
                $model->ref_resp = $mod->rma_codigo;
                $model->ref_resp_modulos = $data->modulo;
                $model->ref_tipobol = $obj->tipoBolet;
                $model->ref_tipoarchivo = $data->tipoFile;
                $model->ref_nivel = $data->nivel;
                $model->ref_fecha = date("Y-m-d H:i:s");
                $model->ref_usuarios = Yii::app()->session['user'];
                $model->ref_estado = 0;
                
                $this->widKey = $model->save();

                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }            
            /**
             * FIN ---> GUARDADO DE ARCHIVOS
             */

            /**
             * INICIO ---> ACTUALIZACION MODULO COMPLETO
             */
            $post = tbl_resp_modulos::model()->with('rpta')->findAll('rma_municipio=:getMun && rma_tipobol=:getBol && rmo_modulo=:getMod',
                array(':getMun'=>$obj->municipio, ':getBol'=>$obj->tipoBolet, ':getMod'=>$obj->modulo));
            foreach($post as $row) {
                $model = tbl_resp_modulos::model()->find("rmo_id=:keyId", array(':keyId'=>$row->rmo_id));            
                $model->rmo_terminado = '1';
                $this->widKey = $model->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * FIN ---> ACTUALIZACION MODULO COMPLETO
             */
            if($swk == 0){
                $transaction->commit();
                echo true;
            }
            else
                $this->widKey = false;
        } catch(Exception $e) {
            $this->widKey = false;
        }
        if(!$this->widKey){
            $transaction->rollback();
            echo "Error system in Controller 'Boleta Gestion' in save data.";
        }
    }
    public function actionEdit(){

        $obj = json_decode($_REQUEST['objForm']);
        $swk = 0;
        $transaction = Yii::app()->db->beginTransaction();
        try{
            /**
             * AQUI SE HACE QUE TODOS LOS DATOS CON RESPUESTAS ESTEN EN ESTADO 1 (ELIMINADO)
             */
            $model_1 = tbl_resp_ges_respuest::model()->with('respMain')->findAll("rma_municipio=:getMun && rma_tipobol=:getBol && res_resp_modulos=:getMod && res_estado = 0", 
                 array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));
            foreach ($model_1 as $row) {
                $row->res_estado = 1;           
                $this->widKey = $row->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * AQUI SE HACE QUE TODOS LOS DATOS CON RESPUESTAS CEROS ESTEN EN ESTADO 1 (ELIMINADO)
             */ 
            $model_2 = tbl_resp_ges_ceros::model()->with('respMain')->findAll("rma_municipio=:getMun && rma_tipobol=:getBol && rce_resp_modulos=:getMod && rce_estado = 0", 
                     array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));
            foreach ($model_2 as $row) {
                $row->rce_estado = 1;           
                $this->widKey = $row->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * AQUI SE HACE QUE TODOS LOS DATOS CON RESPUESTAS VACIAS ESTEN EN ESTADO 1 (ELIMINADO)
             */ 
            $model_3 = tbl_resp_ges_empty::model()->with('respMain')->findAll("rma_municipio=:getMun && rma_tipobol=:getBol && rem_resp_modulos=:getMod && rem_estado = 0", 
                     array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));
            foreach ($model_3 as $row) {
                $row->rem_estado = 1;           
                $this->widKey = $row->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            /**
             * AQUI SE HACE EQUE TODOS LAS FILAS ADICIONALES QUE SE HAYAN AÑADIDO ESTEN EN ESTADO 1 (ELIMINADO)
             */
            $model_4 = tbl_preg_ges_detmo::model()->findAll("prm_municipio=:getMun && prm_boleta=:getBol && prm_modulos=:getMod && prm_estado = 0", 
                     array(':getMun'=>$obj->municipio,':getBol'=>$obj->tipoBolet,':getMod'=>$obj->modulo));
            foreach ($model_4 as $row) {
                $row->prm_estado = 1;
                $this->widKey = $row->save();
                if(!$this->widKey){
                    $swk++;
                    break;
                }
            }
            if($swk == 0){
                $transaction->commit();
                self::actionSave();
            }
            else
                $this->widKey = false;

        }catch(Exeption $e){
            $this->widKey = false;
        }
        if(!$this->widKey){
            $transaction->rollback();
            echo "Error system controller 'Boleta Gestion' in the action -> Edit data.";
        }
    }
}
?>